package com.eastfair.questionnaire.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.enums.SystemSourceEnum;
import com.eastfair.questionnaire.entity.QuestionnaireRelation;
import com.eastfair.questionnaire.vo.QuestionnaireRelationVO;
import com.eastfair.questionnaire.enums.QuestionnaireRelationTypeEnum;
import javafx.util.Pair;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 业务接口
 * 问卷外部系统映射关系
 * </p>
 *
 * @author yuwx
 * @date 2021-08-18
 */
public interface QuestionnaireRelationService extends SuperService<QuestionnaireRelation> {
    /**
    *Description 根据id查询映射
    *@Date 13:20 2021/8/28
    *@param projectId
    *@param relationTypeEnum
    *@param systemSourceEnum
    *@param selfId
    *@return java.util.List<com.eastfair.questionnaire.vo.QuestionnaireRelationVO>
    *@Author yuwx
    **/
    List<QuestionnaireRelationVO> get(Long projectId, QuestionnaireRelationTypeEnum relationTypeEnum , SystemSourceEnum systemSourceEnum, Long internalId);
    /**
    *Description 内部id转外部id
    *@Date 13:20 2021/8/28
    *@param projectId
    *@param relationTypeEnum
    *@param systemSourceEnum
    *@param internalIdList
    *@return java.util.List<com.eastfair.questionnaire.vo.QuestionnaireRelationVO>
    *@Author yuwx
    **/
    List<QuestionnaireRelationVO> listByInternal(Long projectId, QuestionnaireRelationTypeEnum relationTypeEnum , SystemSourceEnum systemSourceEnum, List<Long> internalIdList);
    /**
    *Description 外部Idz转内部ID
    *@Date 17:42 2021/8/28
    *@param projectId
    *@param relationTypeEnum
    *@param systemSourceEnum
    *@param externalIdList
    *@return java.util.List<com.eastfair.questionnaire.vo.QuestionnaireRelationVO>
    *@Author yuwx
    **/
    List<QuestionnaireRelationVO> listByExternal(Long projectId, QuestionnaireRelationTypeEnum relationTypeEnum , SystemSourceEnum systemSourceEnum, List<String> externalIdList);


    /**
    *Description 保存映射关系
    *@Date 13:22 2021/8/28
    *@param projectId
    *@param relationTypeEnum
    *@param systemSourceEnum
    *@param pairList
    *@return void
    *@Author yuwx
    **/
    void save(Long projectId, QuestionnaireRelationTypeEnum relationTypeEnum , SystemSourceEnum systemSourceEnum, List<Pair<Long, String>> pairList);
    /**
    *Description 根据内部id批量删除
    *@Date 11:50 2021/8/30
    *@param projectId
    *@param relationTypeEnum
    *@param systemSourceEnum
    *@param internalIdList
    *@return void
    *@Author yuwx
    **/
    void delete(Long projectId, QuestionnaireRelationTypeEnum relationTypeEnum , SystemSourceEnum systemSourceEnum, List<Long> internalIdList);
}
